package foroweb.controllers;

import foroweb.ejb.*;
import foroweb.entidades.Usuario;
import java.io.Serializable;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.*;
import javax.faces.context.FacesContext;

@ManagedBean
@RequestScoped
public class RegistroController implements Serializable{
    
    //Atributos
    @EJB
    private AccionUsuario au;
    @EJB
    private Busquedas buscar;
    private Usuario usuario;
    private String password2;

    //Constructores
    public RegistroController(){
        usuario=new Usuario();
    }

    //Getters y Setters
    public Usuario getUsuario() {
        return usuario;
    }
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
    public String getPassword2() {
        return password2;
    }
    public void setPassword2(String password2) {
        this.password2 = password2;
    }

    //Metodos
    private boolean comprobarPassword(){
        if(usuario.getPassword().equals(password2)){
            return true;
        }else{
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"La contraseña NO coincide con la confirmación." ,null));
            return false;
        }
    }
    private boolean comprobarNick(){
        if(buscar.buscarUsuario(usuario.getNick())==null){
            return true;
        }else{
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Ese nombre de usuario ya existe." ,null));
            return false;
        }
    }
    private boolean comprobarMail(){
        if(buscar.buscarMail(usuario.getEmail())==null){
            return true;
        }else{
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Ese e-mail ya esta registrado." ,null));
            return false;
        }
    }
    public String doRegistrar(){
        if(comprobarPassword() && comprobarNick() && comprobarMail()){
            usuario.setRol("Estandar");
            au.registrar(usuario);
            usuario=buscar.buscarUsuario(usuario.getNick());
            if(usuario!=null){
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Usuario registrado con éxito" ,null));
            }else{
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Usuario NO registrado. Inténtelo de nuevo o contacte con el administrador." ,null));
            }
            return "/welcome";
        }else{
            return "/registro";
        }
    }
}
